home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / textual / tex / files / !tex / latexsty3 / VANILLA / STY
Encoding:
Text File  |  1991-02-10  |  21.4 KB  |  516 lines

  1. % VANILLA.STY
  2. % COPYRIGHT (C) 1985 BY MICHAEL SPIVAK
  3. % version date 4/7/85
  4. \catcode`\@=11
  5. \font\tensmc=cmcsc10
  6. \def\smc{\tensmc}
  7. \def\pagewidth#1{\hsize= #1 }
  8. \def\pageheight#1{\vsize= #1 }
  9. \def\hcorrection#1{\advance\hoffset by #1 }
  10. \def\vcorrection#1{\advance\voffset by #1 }
  11. \def\wlog#1{}
  12. \newif\iftitle@
  13. \outer\def\title{\title@true\vglue 24\p@ plus 12\p@ minus 12\p@
  14.    \bgroup\let\\=\cr\tabskip\centering
  15.    \halign to \hsize\bgroup\tenbf\hfill\ignorespaces##\unskip\hfill\cr}
  16. \def\endtitle{\cr\egroup\egroup\vglue 18\p@ plus 12\p@ minus 6\p@}
  17. \outer\def\author{\iftitle@\vglue -18\p@ plus -12\p@ minus -6\p@\fi\vglue
  18.     12\p@ plus 6\p@ minus 3\p@\bgroup\let\\=\cr\tabskip\centering
  19.     \halign to \hsize\bgroup\smc\hfill\ignorespaces##\unskip\hfill\cr}
  20. \def\endauthor{\cr\egroup\egroup\vglue 18\p@ plus 12\p@ minus 6\p@}
  21. \outer\def\heading{\bigbreak\bgroup\let\\=\cr\tabskip\centering
  22.     \halign to \hsize\bgroup\smc\hfill\ignorespaces##\unskip\hfill\cr}
  23. \def\endheading{\cr\egroup\egroup\nobreak\medskip}
  24. \outer\def\subheading#1{\medbreak\noindent{\tenbf\ignorespaces
  25.       #1\unskip.\enspace}\ignorespaces}
  26. \outer\def\proclaim#1{\medbreak\noindent\smc\ignorespaces
  27.     #1\unskip.\enspace\sl\ignorespaces}
  28. \outer\def\endproclaim{\par\ifdim\lastskip<\medskipamount\removelastskip
  29.   \penalty 55 \fi\medskip\rm}
  30. \outer\def\demo#1{\par\ifdim\lastskip<\smallskipamount\removelastskip
  31.     \smallskip\fi\noindent{\smc\ignorespaces#1\unskip:\enspace}\rm
  32.       \ignorespaces}
  33. \outer\def\enddemo{\par\smallskip}
  34. \newcount\footmarkcount@
  35. \footmarkcount@=1
  36. \def\makefootnote@#1#2{\insert\footins{\interlinepenalty=100
  37.   \splittopskip=\ht\strutbox \splitmaxdepth=\dp\strutbox 
  38.   \floatingpenalty=\@MM
  39.   \leftskip=\z@\rightskip=\z@\spaceskip=\z@\xspaceskip=\z@
  40.   \noindent{#1}\footstrut\rm\ignorespaces #2\strut}}
  41. \def\footnote{\let\@sf=\empty\ifhmode\edef\@sf{\spacefactor
  42.    =\the\spacefactor}\/\fi\futurelet\next\footnote@}
  43. \def\footnote@{\ifx"\next\let\next\footnote@@\else
  44.     \let\next\footnote@@@\fi\next}
  45. \def\footnote@@"#1"#2{#1\@sf\relax\makefootnote@{#1}{#2}}
  46. \def\footnote@@@#1{$^{\number\footmarkcount@}$\makefootnote@
  47.    {$^{\number\footmarkcount@}$}{#1}\global\advance\footmarkcount@ by 1 }
  48. \def\PCTeX{PC\,\TeX}
  49. \hyphenation{man-u-script man-u-scripts ap-pen-dix ap-pen-di-ces}
  50. \hyphenation{data-base data-bases}
  51. \ifx\amstexloaded@\relax\catcode`\@=13 
  52.   \endinput\else\let\amstexloaded@=\relax\fi
  53. \newlinechar=`\^^J
  54. \def\eat@#1{}
  55. \def\Space@.{\futurelet\Space@\relax}
  56. \Space@. % 
  57. \newhelp\athelp@
  58. {Only certain combinations beginning with @ make sense to me.^^J
  59. Perhaps you wanted \string\@\space for a printed @?^^J
  60. I've ignored the character or group after @.}
  61. \def\futureletnextat@{\futurelet\next\at@}
  62. {\catcode`\@=\active
  63. \lccode`\Z=`\@ \lowercase
  64. {\gdef@{\expandafter\csname futureletnextatZ\endcsname}
  65. \expandafter\gdef\csname atZ\endcsname
  66.    {\ifcat\noexpand\next a\def\next{\csname atZZ\endcsname}\else
  67.    \ifcat\noexpand\next0\def\next{\csname atZZ\endcsname}\else
  68.     \def\next{\csname atZZZ\endcsname}\fi\fi\next}
  69. \expandafter\gdef\csname atZZ\endcsname#1{\expandafter
  70.    \ifx\csname #1Zat\endcsname\relax\def\next
  71.      {\errhelp\expandafter=\csname athelpZ\endcsname
  72.       \errmessage{Invalid use of \string@}}\else
  73.        \def\next{\csname #1Zat\endcsname}\fi\next}
  74. \expandafter\gdef\csname atZZZ\endcsname#1{\errhelp
  75.     \expandafter=\csname athelpZ\endcsname
  76.       \errmessage{Invalid use of \string@}}}}
  77. \def\atdef@#1{\expandafter\def\csname #1@at\endcsname}
  78. \newhelp\defahelp@{If you typed \string\define\space cs instead of
  79. \string\define\string\cs\space^^J
  80. I've substituted an inaccessible control sequence so that your^^J
  81. definition will be completed without mixing me up too badly.^^J
  82. If you typed \string\define{\string\cs} the inaccessible control sequence^^J
  83. was defined to be \string\cs, and the rest of your^^J
  84. definition appears as input.}
  85. \newhelp\defbhelp@{I've ignored your definition, because it might^^J
  86. conflict with other uses that are important to me.}
  87. \def\define{\futurelet\next\define@}
  88. \def\define@{\ifcat\noexpand\next\relax
  89.   \def\next{\define@@}%
  90.   \else\errhelp=\defahelp@
  91.   \errmessage{\string\define\space must be followed by a control 
  92.      sequence}\def\next{\def\garbage@}\fi\next}
  93. \def\undefined@{}
  94. \def\preloaded@{}    
  95. \def\define@@#1{\ifx#1\relax\errhelp=\defbhelp@
  96.    \errmessage{\string#1\space is already defined}\def\next{\def\garbage@}%
  97.    \else\expandafter\ifx\csname\expandafter\eat@\string
  98.          #1@\endcsname\undefined@\errhelp=\defbhelp@
  99.    \errmessage{\string#1\space can't be defined}\def\next{\def\garbage@}%
  100.    \else\expandafter\ifx\csname\expandafter\eat@\string#1\endcsname\relax
  101.      \def\next{\def#1}\else\errhelp=\defbhelp@
  102.      \errmessage{\string#1\space is already defined}\def\next{\def\garbage@}%
  103.       \fi\fi\fi\next}
  104. \def\famzero{\fam\z@}
  105. \def\arccos{\mathop{\famzero arccos}\nolimits}
  106. \def\arcsin{\mathop{\famzero arcsin}\nolimits}
  107. \def\arctan{\mathop{\famzero arctan}\nolimits}
  108. \def\arg{\mathop{\famzero arg}\nolimits}
  109. \def\cos{\mathop{\famzero cos}\nolimits}
  110. \def\cosh{\mathop{\famzero cosh}\nolimits}
  111. \def\cot{\mathop{\famzero cot}\nolimits}
  112. \def\coth{\mathop{\famzero coth}\nolimits}
  113. \def\csc{\mathop{\famzero csc}\nolimits}
  114. \def\deg{\mathop{\famzero deg}\nolimits}
  115. \def\det{\mathop{\famzero det}}
  116. \def\dim{\mathop{\famzero dim}\nolimits}
  117. \def\exp{\mathop{\famzero exp}\nolimits}
  118. \def\gcd{\mathop{\famzero gcd}}
  119. \def\hom{\mathop{\famzero hom}\nolimits}
  120. \def\inf{\mathop{\famzero inf}}
  121. \def\ker{\mathop{\famzero ker}\nolimits}
  122. \def\lg{\mathop{\famzero lg}\nolimits}
  123. \def\lim{\mathop{\famzero lim}}
  124. \def\liminf{\mathop{\famzero lim\,inf}}
  125. \def\limsup{\mathop{\famzero lim\,sup}}
  126. \def\ln{\mathop{\famzero ln}\nolimits}
  127. \def\log{\mathop{\famzero log}\nolimits}
  128. \def\max{\mathop{\famzero max}}
  129. \def\min{\mathop{\famzero min}}
  130. \def\Pr{\mathop{\famzero Pr}}
  131. \def\sec{\mathop{\famzero sec}\nolimits}
  132. \def\sin{\mathop{\famzero sin}\nolimits}
  133. \def\sinh{\mathop{\famzero sinh}\nolimits}
  134. \def\sup{\mathop{\famzero sup}}
  135. \def\tan{\mathop{\famzero tan}\nolimits}
  136. \def\tanh{\mathop{\famzero tanh}\nolimits}
  137. \def\textfont@#1#2{\def#1{\relax\ifmmode
  138.     \errmessage{Use \string#1\space only in text}\else#2\fi}}
  139. \textfont@\rm\tenrm
  140. \textfont@\it\tenit
  141. \textfont@\sl\tensl
  142. \textfont@\bf\tenbf
  143. \textfont@\smc\tensmc
  144. \let\ic@=\/
  145. \def\/{\unskip\ic@}
  146. \def\textfonti{\the\textfont1 }
  147. \def\t#1#2{{\edef\next{\the\font}\textfonti\accent"7F \next#1#2}}
  148. \let\B=\=
  149. \let\D=\.
  150. \def~{\unskip\nobreak\ \ignorespaces}
  151. {\catcode`\@=\active
  152. \gdef\@{\char'100 }}
  153. \atdef@-{\leavevmode\futurelet\next\athyph@}
  154. \def\athyph@{\ifx\next-\let\next=\athyph@@
  155.   \else\let\next=\athyph@@@\fi\next}
  156. \def\athyph@@@{\hbox{-}}
  157. \def\athyph@@#1{\futurelet\next\athyph@@@@}
  158. \def\athyph@@@@{\if\next-\def\next##1{\hbox{---}}\else
  159.     \def\next{\hbox{--}}\fi\next}
  160. \def\.{.\spacefactor=\@m}
  161. \atdef@.{\null.}
  162. \atdef@,{\null,}
  163. \atdef@;{\null;}
  164. \atdef@:{\null:}
  165. \atdef@?{\null?}
  166. \atdef@!{\null!}   
  167. \def\srdr@{\thinspace}                     
  168. \def\drsr@{\kern.02778em}
  169. \def\sldl@{\kern.02778em}
  170. \def\dlsl@{\thinspace}
  171. \atdef@"{\unskip\futurelet\next\atqq@}
  172. \def\atqq@{\ifx\next\Space@\def\next. {\atqq@@}\else
  173.          \def\next.{\atqq@@}\fi\next.}
  174. \def\atqq@@{\futurelet\next\atqq@@@}
  175. \def\atqq@@@{\ifx\next`\def\next`{\atqql@}\else\def\next'{\atqqr@}\fi\next}
  176. \def\atqql@{\futurelet\next\atqql@@}
  177. \def\atqql@@{\ifx\next`\def\next`{\sldl@``}\else\def\next{\dlsl@`}\fi\next}
  178. \def\atqqr@{\futurelet\next\atqqr@@}
  179. \def\atqqr@@{\ifx\next'\def\next'{\srdr@''}\else\def\next{\drsr@'}\fi\next}
  180. \def\flushpar{\par\noindent}
  181. \def\textfontii{\the\textfont2 }
  182. \def\{{\relax\ifmmode\lbrace\else
  183.     {\textfontii f}\spacefactor=\@m\fi}
  184. \def\}{\relax\ifmmode\rbrace\else
  185.     \let\@sf=\empty\ifhmode\edef\@sf{\spacefactor=\the\spacefactor}\fi
  186.       {\textfontii g}\@sf\relax\fi}   
  187. \def\nonhmodeerr@#1{\errmessage
  188.      {\string#1\space allowed only within text}}
  189. \def\linebreak{\relax\ifhmode\unskip\break\else
  190.     \nonhmodeerr@\linebreak\fi}
  191. \def\allowlinebreak{\relax
  192.    \ifhmode\allowbreak\else\nonhmodeerr@\allowlinebreak\fi}
  193. \newskip\saveskip@
  194. \def\nolinebreak{\relax\ifhmode\saveskip@=\lastskip\unskip
  195.   \nobreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi
  196.    \else\nonhmodeerr@\nolinebreak\fi}
  197. \def\newline{\relax\ifhmode\null\hfil\break
  198.     \else\nonhmodeerr@\newline\fi}
  199. \def\nonmathaerr@#1{\errmessage
  200.      {\string#1\space is not allowed in display math mode}}
  201. \def\nonmathberr@#1{\errmessage{\string#1\space is allowed only in math mode}}
  202. \def\mathbreak{\relax\ifmmode\ifinner\break\else
  203.    \nonmathaerr@\mathbreak\fi\else\nonmathberr@\mathbreak\fi}
  204. \def\nomathbreak{\relax\ifmmode\ifinner\nobreak\else
  205.     \nonmathaerr@\nomathbreak\fi\else\nonmathberr@\nomathbreak\fi}
  206. \def\allowmathbreak{\relax\ifmmode\ifinner\allowbreak\else
  207.      \nonmathaerr@\allowmathbreak\fi\else\nonmathberr@\allowmathbreak\fi}
  208. \def\pagebreak{\relax\ifmmode
  209.    \ifinner\errmessage{\string\pagebreak\space
  210.      not allowed in non-display math mode}\else\postdisplaypenalty-\@M\fi
  211.    \else\ifvmode\penalty-\@M\else\edef\spacefactor@
  212.        {\spacefactor=\the\spacefactor}\vadjust{\penalty-\@M}\spacefactor@
  213.         \relax\fi\fi}
  214. \def\nopagebreak{\relax\ifmmode
  215.      \ifinner\errmessage{\string\nopagebreak\space
  216.     not allowed in non-display math mode}\else\postdisplaypenalty\@M\fi
  217.     \else\ifvmode\nobreak\else\edef\spacefactor@
  218.         {\spacefactor=\the\spacefactor}\vadjust{\penalty\@M}\spacefactor@
  219.          \relax\fi\fi}
  220. \def\newpage{\relax\ifvmode\vfill\penalty-\@M\else\nonvmodeerr@\newpage\fi}
  221. \def\nonvmodeerr@#1{\errmessage
  222.     {\string#1\space is allowed only between paragraphs}}
  223. \def\smallpagebreak{\relax\ifvmode\smallbreak
  224.       \else\nonvmodeerr@\smallpagebreak\fi}
  225. \def\medpagebreak{\relax\ifvmode\medbreak
  226.        \else\nonvmodeerr@\medpagebreak\fi}
  227. \def\bigpagebreak{\relax\ifvmode\bigbreak
  228.       \else\nonvmodeerr@\bigpagebreak\fi}
  229. \newdimen\captionwidth@
  230. \captionwidth@=\hsize
  231. \advance\captionwidth@ by -1.5in
  232. \def\caption#1{}
  233. \def\topspace#1{\gdef\thespace@{#1}\ifvmode\def\next
  234.     {\futurelet\next\topspace@}\else\def\next{\nonvmodeerr@\topspace}\fi\next}
  235. \def\topspace@{\ifx\next\Space@\def\next. {\futurelet\next\topspace@@}\else
  236.      \def\next.{\futurelet\next\topspace@@}\fi\next.}
  237. \def\topspace@@{\ifx\next\caption\let\next\topspace@@@\else
  238.     \let\next\topspace@@@@\fi\next}
  239.  \def\topspace@@@@{\topinsert\vbox to 
  240.        \thespace@{}\endinsert}
  241. \def\topspace@@@\caption#1{\topinsert\vbox to
  242.     \thespace@{}\nobreak
  243.       \smallskip
  244.     \setbox\z@=\hbox{\noindent\ignorespaces#1\unskip}%
  245.    \ifdim\wd\z@>\captionwidth@
  246.    \centerline{\vbox{\hsize=\captionwidth@\noindent\ignorespaces#1\unskip}}%
  247.    \else\centerline{\box\z@}\fi\endinsert}
  248. \def\midspace#1{\gdef\thespace@{#1}\ifvmode\def\next
  249.     {\futurelet\next\midspace@}\else\def\next{\nonvmodeerr@\midspace}\fi\next}
  250. \def\midspace@{\ifx\next\Space@\def\next. {\futurelet\next\midspace@@}\else
  251.      \def\next.{\futurelet\next\midspace@@}\fi\next.}
  252. \def\midspace@@{\ifx\next\caption\let\next\midspace@@@\else
  253.     \let\next\midspace@@@@\fi\next}
  254.  \def\midspace@@@@{\midinsert\vbox to 
  255.        \thespace@{}\endinsert}
  256. \def\midspace@@@\caption#1{\midinsert\vbox to
  257.     \thespace@{}\nobreak
  258.       \smallskip
  259.       \setbox\z@=\hbox{\noindent\ignorespaces#1\unskip}%
  260.       \ifdim\wd\z@>\captionwidth@
  261.     \centerline{\vbox{\hsize=\captionwidth@\noindent\ignorespaces#1\unskip}}%
  262.     \else\centerline{\box\z@}\fi\endinsert}
  263. \mathchardef\prime@="0230
  264. \def\prime{{{}\prime@{}}}
  265. \def\prim@s{\prime@\futurelet\next\pr@m@s}
  266. \let\dsize=\displaystyle
  267. \let\tsize=\textstyle
  268. \def\,{\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi}
  269. \def\!{\relax\ifmmode\mskip-\thinmuskip\else\negthinspace\fi}
  270. \def\frac#1#2{{#1\over#2}}
  271. \def\dfrac#1#2{{\displaystyle{#1\over#2}}}
  272. \def\tfrac#1#2{{\textstyle{#1\over#2}}}
  273. \def\binom#1#2{{#1\choose #2}}
  274. \def\dbinom#1#2{{\displaystyle{#1\choose #2}}}    
  275. \def\tbinom#1#2{{\textstyle{#1\choose #2}}}
  276. \def\:{\nobreak\hskip.1111em{:}\hskip.3333em plus .0555em\relax}
  277. \def\intic@{\mathchoice{\hskip5\p@}{\hskip4\p@}{\hskip4\p@}{\hskip4\p@}}
  278. \def\negintic@{\mathchoice{\hskip-5\p@}{\hskip-4\p@}{\hskip-4\p@}{\hskip-4\p@}}
  279. \def\intkern@{\mathchoice{\!\!\!}{\!\!}{\!\!}{\!\!}}
  280. \def\intdots@{\mathchoice{\cdots}{{\cdotp}\mkern1.5mu
  281.     {\cdotp}\mkern1.5mu{\cdotp}}{{\cdotp}\mkern1mu{\cdotp}\mkern1mu
  282.       {\cdotp}}{{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}}
  283. \newcount\intno@             
  284. \def\iint{\intno@=\tw@\futurelet\next\ints@} 
  285. \def\iiint{\intno@=\thr@@\futurelet\next\ints@}
  286. \def\iiiint{\intno@=4 \futurelet\next\ints@}
  287. \def\idotsint{\intno@=\z@\futurelet\next\ints@}
  288. \def\ints@{\findlimits@\ints@@}
  289. \newif\iflimtoken@
  290. \newif\iflimits@
  291. \def\findlimits@{\limtoken@false\limits@false\ifx\next\limits
  292.  \limtoken@true\limits@true\else\ifx\next\nolimits\limtoken@true\limits@false
  293.     \fi\fi}
  294. \def\multintlimits@{\intop\ifnum\intno@=\z@\intdots@
  295.   \else\intkern@\fi
  296.     \ifnum\intno@>\tw@\intop\intkern@\fi
  297.      \ifnum\intno@>\thr@@\intop\intkern@\fi\intop}
  298. \def\multint@{\int\ifnum\intno@=\z@\intdots@\else\intkern@\fi
  299.    \ifnum\intno@>\tw@\int\intkern@\fi
  300.     \ifnum\intno@>\thr@@\int\intkern@\fi\int}
  301. \def\ints@@{\iflimtoken@\def\ints@@@{\iflimits@
  302.    \negintic@\mathop{\intic@\multintlimits@}\limits\else
  303.     \multint@\nolimits\fi\eat@}\else
  304.      \def\ints@@@{\multint@\nolimits}\fi\ints@@@}
  305. \def\Sb{_\bgroup\vspace@
  306.         \baselineskip=\fontdimen10 \scriptfont\tw@
  307.         \advance\baselineskip by \fontdimen12 \scriptfont\tw@
  308.         \lineskip=\thr@@\fontdimen8 \scriptfont\thr@@
  309.         \lineskiplimit=\thr@@\fontdimen8 \scriptfont\thr@@
  310.         \Let@\vbox\bgroup\halign\bgroup \hfil$\scriptstyle
  311.             {##}$\hfil\cr}
  312. \def\endSb{\crcr\egroup\egroup\egroup}
  313. \def\Sp{^\bgroup\vspace@
  314.         \baselineskip=\fontdimen10 \scriptfont\tw@
  315.         \advance\baselineskip by \fontdimen12 \scriptfont\tw@
  316.         \lineskip=\thr@@\fontdimen8 \scriptfont\thr@@
  317.         \lineskiplimit=\thr@@\fontdimen8 \scriptfont\thr@@
  318.         \Let@\vbox\bgroup\halign\bgroup \hfil$\scriptstyle
  319.             {##}$\hfil\cr}
  320. \def\endSp{\crcr\egroup\egroup\egroup}
  321. \def\Let@{\relax\iffalse{\fi\let\\=\cr\iffalse}\fi}
  322. \def\vspace@{\def\vspace##1{\noalign{\vskip##1 }}}
  323. \def\aligned{\,\vcenter\bgroup\vspace@\Let@\openup\jot\m@th\ialign
  324.   \bgroup \strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil\crcr}
  325. \def\endaligned{\crcr\egroup\egroup}
  326. \def\matrix{\,\vcenter\bgroup\Let@\vspace@
  327.     \normalbaselines
  328.   \m@th\ialign\bgroup\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr
  329.     \mathstrut\crcr\noalign{\kern-\baselineskip}}
  330. \def\endmatrix{\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}\egroup
  331.                 \egroup\,}
  332. \newtoks\hashtoks@
  333. \hashtoks@={#}
  334. \def\format{\crcr\egroup\iffalse{\fi\ifnum`}=0 \fi\format@}
  335. \def\format@#1\\{\def\preamble@{#1}%
  336.   \def\c{\hfil$\the\hashtoks@$\hfil}%
  337.   \def\r{\hfil$\the\hashtoks@$}%
  338.   \def\l{$\the\hashtoks@$\hfil}%
  339.   \setbox\z@=\hbox{\xdef\Preamble@{\preamble@}}\ifnum`{=0 \fi\iffalse}\fi
  340.    \ialign\bgroup\span\Preamble@\crcr}
  341. \def\pmatrix{\left(\matrix} \def\endpmatrix{\endmatrix\right)}
  342. \let\hdots=\ldots
  343. \def\cases{\left\{\,\vcenter\bgroup\vspace@
  344.      \normalbaselines\openup\jot\m@th
  345.        \Let@\ialign\bgroup$##$\hfil&\quad$##$\hfil\crcr
  346.       \mathstrut\crcr\noalign{\kern-\baselineskip}}
  347. \def\endcases{\endmatrix\right.}
  348. \newif\iftagsleft@
  349. \tagsleft@true
  350. \def\TagsOnRight{\global\tagsleft@false}
  351. \def\tag#1$${\iftagsleft@\leqno\else\eqno\fi
  352.  \hbox{\def\pagebreak{\global\postdisplaypenalty-\@M}%
  353.  \def\nopagebreak{\global\postdisplaypenalty\@M}\rm(#1\unskip)}%
  354.   $$\postdisplaypenalty\z@\ignorespaces}
  355. \interdisplaylinepenalty=\@M
  356. \def\allowdisplaybreak@{\def\allowdisplaybreak{\noalign{\allowbreak}}}
  357. \def\displaybreak@{\def\displaybreak{\noalign{\break}}}
  358. \def\align#1\endalign{\def\tag{&}\vspace@\allowdisplaybreak@\displaybreak@
  359.   \iftagsleft@\lalign@#1\endalign\else
  360.    \ralign@#1\endalign\fi}
  361. \def\ralign@#1\endalign{\displ@y\Let@\tabskip\centering\halign to\displaywidth
  362.      {\hfil$\displaystyle{##}$\tabskip=\z@&$\displaystyle{{}##}$\hfil
  363.        \tabskip=\centering&\llap{\hbox{(\rm##\unskip)}}\tabskip\z@\crcr
  364.              #1\crcr}}
  365. \def\lalign@#1\endalign{\displ@y\Let@\tabskip\centering\halign to \displaywidth
  366.    {\hfil$\displaystyle{##}$\tabskip=\z@&$\displaystyle{{}##}$\hfil
  367.    \tabskip=\centering&\kern-\displaywidth
  368.         \rlap{\hbox{(\rm##\unskip)}}\tabskip=\displaywidth\crcr
  369.                #1\crcr}}
  370. \def\overrightarrow{\mathpalette\overrightarrow@}
  371. \def\overrightarrow@#1#2{\vbox{\ialign{$##$\cr
  372.     #1{-}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
  373.      \mkern-6mu{\to}\cr
  374.      \noalign{\kern -1\p@\nointerlineskip}
  375.      \hfil#1#2\hfil\cr}}}
  376. \def\overleftarrow{\mathpalette\overleftarrow@}
  377. \def\overleftarrow@#1#2{\vbox{\ialign{$##$\cr
  378.      #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
  379.       \mkern-6mu{-}\cr
  380.      \noalign{\kern -1\p@\nointerlineskip}
  381.      \hfil#1#2\hfil\cr}}}
  382. \def\overleftrightarrow{\mathpalette\overleftrightarrow@}
  383. \def\overleftrightarrow@#1#2{\vbox{\ialign{$##$\cr
  384.      #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
  385.        \mkern-6mu{\to}\cr
  386.     \noalign{\kern -1\p@\nointerlineskip}
  387.       \hfil#1#2\hfil\cr}}}
  388. \def\underrightarrow{\mathpalette\underrightarrow@}
  389. \def\underrightarrow@#1#2{\vtop{\ialign{$##$\cr
  390.     \hfil#1#2\hfil\cr
  391.      \noalign{\kern -1\p@\nointerlineskip}
  392.     #1{-}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
  393.      \mkern-6mu{\to}\cr}}}
  394. \def\underleftarrow{\mathpalette\underleftarrow@}
  395. \def\underleftarrow@#1#2{\vtop{\ialign{$##$\cr
  396.      \hfil#1#2\hfil\cr
  397.      \noalign{\kern -1\p@\nointerlineskip}
  398.      #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
  399.       \mkern-6mu{-}\cr}}}
  400. \def\underleftrightarrow{\mathpalette\underleftrightarrow@}
  401. \def\underleftrightarrow@#1#2{\vtop{\ialign{$##$\cr
  402.       \hfil#1#2\hfil\cr
  403.     \noalign{\kern -1\p@\nointerlineskip}
  404.      #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
  405.        \mkern-6mu{\to}\cr}}}
  406. \def\sqrt#1{\radical"270370 {#1}}
  407. \def\dots{\relax\ifmmode\let\next=\ldots\else\let\next=\tdots@\fi\next}
  408. \def\tdots@{\unskip\ \tdots@@}
  409. \def\tdots@@{\futurelet\next\tdots@@@}
  410. \def\tdots@@@{$\mathinner{\ldotp\ldotp\ldotp}\,
  411.    \ifx\next,$\else
  412.    \ifx\next.\,$\else
  413.    \ifx\next;\,$\else
  414.    \ifx\next:\,$\else
  415.    \ifx\next?\,$\else
  416.    \ifx\next!\,$\else
  417.    $ \fi\fi\fi\fi\fi\fi}
  418. \def\text{\relax\ifmmode\let\next=\text@\else\let\next=\text@@\fi\next}
  419. \def\text@@#1{\hbox{#1}}
  420. \def\text@#1{\mathchoice
  421.  {\hbox{\everymath{\displaystyle}\def\textfonti{\the\textfont1 }%
  422.     \def\textfontii{\the\textfont2 }\textdef@@ T#1}}
  423.  {\hbox{\everymath{\textstyle}\def\textfonti{\the\textfont1 }%
  424.     \def\textfontii{\the\textfont2 }\textdef@@ T#1}}
  425.  {\hbox{\everymath{\scriptstyle}\def\textfonti{\the\scriptfont1 }%
  426.    \def\textfontii{\the\scriptfont2 }\textdef@@ S\rm#1}}
  427.  {\hbox{\everymath{\scriptscriptstyle}\def\textfonti{\the\scriptscriptfont1 }%
  428.    \def\textfontii{\the\scriptscriptfont2 }\textdef@@ s\rm#1}}}
  429. \def\textdef@@#1{\textdef@#1\rm \textdef@#1\bf
  430.    \textdef@#1\sl \textdef@#1\it}
  431. \def\rmfam{0}
  432. \def\textdef@#1#2{\def\next{\csname\expandafter\eat@\string#2fam\endcsname}%
  433. \if S#1\edef#2{\the\scriptfont\next\relax}%
  434.  \else\if s#1\edef#2{\the\scriptscriptfont\next\relax}%
  435.  \else\edef#2{\the\textfont\next\relax}\fi\fi}
  436. \scriptfont\itfam=\tenit \scriptscriptfont\itfam=\tenit
  437. \scriptfont\slfam=\tensl \scriptscriptfont\slfam=\tensl
  438. \mathcode`\0="0030
  439. \mathcode`\1="0031
  440. \mathcode`\2="0032
  441. \mathcode`\3="0033
  442. \mathcode`\4="0034
  443. \mathcode`\5="0035
  444. \mathcode`\6="0036
  445. \mathcode`\7="0037
  446. \mathcode`\8="0038
  447. \mathcode`\9="0039
  448. \def\Cal{\relax\ifmmode\let\next=\Cal@\else
  449.      \def\next{\errmessage{Use \string\Cal\space only in math mode}}\fi\next}
  450. \def\Cal@#1{{\fam2 #1}}
  451. \def\bold{\relax\ifmmode\let\next=\bold@\else
  452.    \def\next{\errmessage{Use \string\bold\space only in math
  453.       mode}}\fi\next}\def\bold@#1{{\fam\bffam #1}}
  454. \mathchardef\Gamma="0000
  455. \mathchardef\Delta="0001
  456. \mathchardef\Theta="0002
  457. \mathchardef\Lambda="0003
  458. \mathchardef\Xi="0004
  459. \mathchardef\Pi="0005
  460. \mathchardef\Sigma="0006
  461. \mathchardef\Upsilon="0007
  462. \mathchardef\Phi="0008
  463. \mathchardef\Psi="0009
  464. \mathchardef\Omega="000A
  465. \mathchardef\varGamma="0100
  466. \mathchardef\varDelta="0101
  467. \mathchardef\varTheta="0102
  468. \mathchardef\varLambda="0103
  469. \mathchardef\varXi="0104
  470. \mathchardef\varPi="0105
  471. \mathchardef\varSigma="0106
  472. \mathchardef\varUpsilon="0107
  473. \mathchardef\varPhi="0108
  474. \mathchardef\varPsi="0109
  475. \mathchardef\varOmega="010A
  476. \font\dummyft@=dummy
  477. \fontdimen1 \dummyft@=\z@
  478. \fontdimen2 \dummyft@=\z@
  479. \fontdimen3 \dummyft@=\z@
  480. \fontdimen4 \dummyft@=\z@
  481. \fontdimen5 \dummyft@=\z@
  482. \fontdimen6 \dummyft@=\z@
  483. \fontdimen7 \dummyft@=\z@
  484. \fontdimen8 \dummyft@=\z@
  485. \fontdimen9 \dummyft@=\z@
  486. \fontdimen10 \dummyft@=\z@
  487. \fontdimen11 \dummyft@=\z@
  488. \fontdimen12 \dummyft@=\z@
  489. \fontdimen13 \dummyft@=\z@
  490. \fontdimen14 \dummyft@=\z@
  491. \fontdimen15 \dummyft@=\z@
  492. \fontdimen16 \dummyft@=\z@
  493. \fontdimen17 \dummyft@=\z@
  494. \fontdimen18 \dummyft@=\z@
  495. \fontdimen19 \dummyft@=\z@
  496. \fontdimen20 \dummyft@=\z@
  497. \fontdimen21 \dummyft@=\z@
  498. \fontdimen22 \dummyft@=\z@
  499. \def\fontlist@{\\{\tenrm}\\{\sevenrm}\\{\fiverm}\\{\teni}\\{\seveni}%
  500.  \\{\fivei}\\{\tensy}\\{\sevensy}\\{\fivesy}\\{\tenex}\\{\tenbf}\\{\sevenbf}%
  501.  \\{\fivebf}\\{\tensl}\\{\tenit}\\{\tensmc}}
  502. \def\dodummy@{{\def\\##1{\global\let##1=\dummyft@}\fontlist@}}
  503. \newif\ifsyntax@
  504. \newcount\countxviii@
  505. \def\newtoks@{\alloc@5\toks\toksdef\@cclvi}
  506. \def\nopages@{\output={\setbox\z@=\box\@cclv \deadcycles=\z@}\newtoks@\output}
  507. \def\syntax{\syntax@true\dodummy@\countxviii@=\count18
  508. \loop \ifnum\countxviii@ > \z@ \textfont\countxviii@=\dummyft@
  509.    \scriptfont\countxviii@=\dummyft@ \scriptscriptfont\countxviii@=\dummyft@
  510.      \advance\countxviii@ by-\@ne\repeat
  511. \dummyft@\tracinglostchars=\z@
  512.   \nopages@\frenchspacing\hbadness=\@M}
  513. \def\wlog#1{\immediate\write-1{#1}}
  514. \catcode`\@=\active
  515.  
  516.